怎么用c语言编一个a^n(a的n次方)的算法?(结果用顺序表存储)

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:21:39

如果n比较小,可以吧 result *= a循环n次。。

如果n比较大, 可以逐步来算。 这样考虑,f(n) = 2^n 如果有了 f(m)的结果, 那么 f(2m)和f(2m+1) 就分别等于 f(m)*f(m)和f(m)*f(m)*a

所以可以从最高位开始查看n的每一位, 如果这一位是1, 那么 result = result * result * a; 如果这一位是0,那么result = result * result; 其中result 的初始值是1。 这样复杂度就是log(n)的

a=a*a
循环n-1次

什么意思呢?只要一个最后结果吗?是的话如下:
#include<stdio.h>

int main()
{
int i=0;
int a,n,sum=0;
printf("请输入a及n的值,用空格隔开:");
scanf("%d%d",&a,&n);
for(i=0;i<n;i++)
{
sum*=a;
}
printf("\n");
printf("结果是:%d\n",sum);

return 0;
}

这个不用自己编,C的标准库里就有这个函数供你使用。
函数名为pow(double t1,double t2);引用的时候要包含头文件 #include <math.h>

例如下列程序
#include<iostream>
#include<math.h>

using namespace std;

void main()
{
int t=2, t1=3;
int k;
k=pow(t,t1);
cout<<t<<"